home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / adsp2100 / adsp2100.h < prev   
C/C++ Source or Header  |  1999-08-18  |  5KB  |  123 lines

  1. /*###################################################################################################
  2. **
  3. **
  4. **        ADSP2100.h
  5. **        Interface file for the portable Analog ADSP-2100 emulator.
  6. **        Written by Aaron Giles
  7. **
  8. **
  9. **#################################################################################################*/
  10.  
  11. #ifndef _ADSP2100_H
  12. #define _ADSP2100_H
  13.  
  14. #include "memory.h"
  15. #include "osd_cpu.h"
  16.  
  17.  
  18. /*###################################################################################################
  19. **    COMPILE-TIME DEFINITIONS
  20. **#################################################################################################*/
  21.  
  22. /* turn this on to support 2101 and later CPUs (not tested at all!) */
  23. #define SUPPORT_2101_EXTENSIONS 0
  24.  
  25.  
  26. /*###################################################################################################
  27. **    GLOBAL CONSTANTS
  28. **#################################################################################################*/
  29.  
  30. #define ADSP2100_DATA_OFFSET    0x00000
  31. #define ADSP2100_PGM_OFFSET        0x10000
  32. #define ADSP2100_SIZE            0x20000
  33.  
  34.  
  35. /*###################################################################################################
  36. **    MEMORY MAP MACROS
  37. **#################################################################################################*/
  38.  
  39. #define ADSP_DATA_ADDR_RANGE(start, end) (ADSP2100_DATA_OFFSET + ((start) << 1)), (ADSP2100_DATA_OFFSET + ((end) << 1) + 1)
  40. #define ADSP_PGM_ADDR_RANGE(start, end)  (ADSP2100_PGM_OFFSET + ((start) << 2)), (ADSP2100_PGM_OFFSET + ((end) << 2) + 3)
  41.  
  42.  
  43. /*###################################################################################################
  44. **    REGISTER ENUMERATION
  45. **#################################################################################################*/
  46.  
  47. enum 
  48. {
  49.     ADSP2100_PC=1, 
  50.     ADSP2100_AX0, ADSP2100_AX1, ADSP2100_AY0, ADSP2100_AY1, ADSP2100_AR, ADSP2100_AF,
  51.     ADSP2100_MX0, ADSP2100_MX1, ADSP2100_MY0, ADSP2100_MY1, ADSP2100_MR0, ADSP2100_MR1, ADSP2100_MR2, ADSP2100_MF,
  52.     ADSP2100_SI, ADSP2100_SE, ADSP2100_SB, ADSP2100_SR0, ADSP2100_SR1,
  53.     ADSP2100_I0, ADSP2100_I1, ADSP2100_I2, ADSP2100_I3, ADSP2100_I4, ADSP2100_I5, ADSP2100_I6, ADSP2100_I7,
  54.     ADSP2100_L0, ADSP2100_L1, ADSP2100_L2, ADSP2100_L3, ADSP2100_L4, ADSP2100_L5, ADSP2100_L6, ADSP2100_L7,
  55.     ADSP2100_M0, ADSP2100_M1, ADSP2100_M2, ADSP2100_M3, ADSP2100_M4, ADSP2100_M5, ADSP2100_M6, ADSP2100_M7,
  56.     ADSP2100_PX, ADSP2100_CNTR, ADSP2100_ASTAT, ADSP2100_SSTAT, ADSP2100_MSTAT,
  57.     ADSP2100_PCSP, ADSP2100_CNTRSP, ADSP2100_STATSP, ADSP2100_LOOPSP,
  58.     ADSP2100_IMASK, ADSP2100_ICNTL, ADSP2100_IRQSTATE0, ADSP2100_IRQSTATE1, ADSP2100_IRQSTATE2, ADSP2100_IRQSTATE3,
  59.     ADSP2100_FLAGIN, ADSP2100_FLAGOUT
  60. #if SUPPORT_2101_EXTENSIONS
  61.     , ADSP2100_FL0, ADSP2100_FL1, ADSP2100_FL2 
  62. #endif
  63. };
  64.     
  65.  
  66. /*###################################################################################################
  67. **    INTERRUPT CONSTANTS
  68. **#################################################################################################*/
  69.  
  70. #define ADSP2100_INT_NONE    -1        /* No interrupt requested */
  71. #define ADSP2100_IRQ0        0        /* IRQ0 */
  72. #define ADSP2100_IRQ1        1        /* IRQ1 */
  73. #define ADSP2100_IRQ2        2        /* IRQ2 */
  74. #define ADSP2100_IRQ3        3        /* IRQ3 */
  75.  
  76.  
  77. /*###################################################################################################
  78. **    PUBLIC GLOBALS
  79. **#################################################################################################*/
  80.  
  81. extern int adsp2100_icount;
  82.  
  83.  
  84. /*###################################################################################################
  85. **    PUBLIC FUNCTIONS
  86. **#################################################################################################*/
  87.  
  88. extern void adsp2100_reset(void *param);
  89. extern void adsp2100_exit(void);
  90. extern int adsp2100_execute(int cycles);    /* NS 970908 */
  91. extern unsigned adsp2100_get_context(void *dst);
  92. extern void adsp2100_set_context(void *src);
  93. extern unsigned adsp2100_get_pc(void);
  94. extern void adsp2100_set_pc(unsigned val);
  95. extern unsigned adsp2100_get_sp(void);
  96. extern void adsp2100_set_sp(unsigned val);
  97. extern unsigned adsp2100_get_reg(int regnum);
  98. extern void adsp2100_set_reg(int regnum, unsigned val);
  99. extern void adsp2100_set_nmi_line(int state);
  100. extern void adsp2100_set_irq_line(int irqline, int state);
  101. extern void adsp2100_set_irq_callback(int (*callback)(int irqline));
  102. extern const char *adsp2100_info(void *context, int regnum);
  103. extern unsigned adsp2100_dasm(char *buffer, unsigned pc);
  104.  
  105.  
  106. /****************************************************************************/
  107. /* Read a byte from given memory location                                   */
  108. /****************************************************************************/
  109. #define ADSP2100_RDMEM(A) ((unsigned)cpu_readmem16lew(A))
  110. #define ADSP2100_RDMEM_WORD(A) ((unsigned)cpu_readmem16lew_word(A))
  111.  
  112. /****************************************************************************/
  113. /* Write a byte to given memory location                                    */
  114. /****************************************************************************/
  115. #define ADSP2100_WRMEM(A,V) (cpu_writemem16lew(A,V))
  116. #define ADSP2100_WRMEM_WORD(A,V) (cpu_writemem16lew_word(A,V))
  117.  
  118. #ifdef MAME_DEBUG
  119. extern unsigned DasmADSP2100(char *buffer, unsigned pc);
  120. #endif
  121.  
  122. #endif /* _ADSP2100_H */
  123.